home *** CD-ROM | disk | FTP | other *** search
/ Die Speccy' 97 / Die Speccy' 97.iso / amiga_system / the_aminet / dev / lang / python020.lha / python / lib / test / test_signal.py < prev    next >
Text File  |  1995-10-22  |  910b  |  51 lines

  1. # Test the signal module
  2.  
  3. import signal
  4. import os
  5.  
  6.  
  7. pid = os.getpid()
  8.  
  9. # Shell script that will send us asynchronous signals
  10. script = """
  11. (
  12.     set -x
  13.     sleep 2
  14.     kill -5 %(pid)d
  15.     sleep 2
  16.     kill -2 %(pid)d
  17.     sleep 2
  18.     kill -3 %(pid)d
  19. ) &
  20. """ % vars()
  21.  
  22. def handlerA(*args):
  23.     print "handlerA", args
  24.  
  25. HandlerBCalled = "HandlerBCalled"    # Exception
  26.  
  27. def handlerB(*args):
  28.     print "handlerB", args
  29.     raise HandlerBCalled, args
  30.  
  31. signal.alarm(20)            # Entire test lasts at most 20 sec.
  32. signal.signal(5, handlerA)
  33. signal.signal(2, handlerB)
  34. signal.signal(3, signal.SIG_IGN)
  35. signal.signal(signal.SIGALRM, signal.default_int_handler)
  36.  
  37. os.system(script)
  38.  
  39. print "starting pause() loop..."
  40.  
  41. try:
  42.     while 1:
  43.         print "call pause()..."
  44.         try:
  45.             signal.pause()
  46.             print "pause() returned"
  47.         except HandlerBCalled:
  48.             print "HandlerBCalled exception caught"
  49. except KeyboardInterrupt:
  50.     print "KeyboardInterrupt (assume the alarm() went off)"
  51.